package com.sprouting.personal.annotations;

import com.sprouting.personal.annotations.impl.CheckNotNullValidator;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * 数据不能为空 注解，如果数据为空则校验不通过
 * 数据非空注解应该使用官方默认的
 *
 * @author ：LX（长沙麓谷）
 * @date 创建时间： 2022/7/28 23:03
 */
@Retention(RUNTIME)
@Documented
@Target({METHOD, FIELD, ANNOTATION_TYPE})
@Constraint(validatedBy = CheckNotNullValidator.class)
public @interface CheckNotNull {

    /**
     * 校验错误时候的提示信息
     * @return
     */
    String message() default "非法请求参数";

    /**
     * 分组，有时候只想让该注解在请求或修改的时候触发成功
     * 对应 AddGroup 和 UpdGroup 接口
     * @return
     */
    Class<?>[] groups() default { };

    Class<? extends Payload>[] payload() default { };
}
